Text Generation এবং Sentiment Analysis হল প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) এর দুটি গুরুত্বপূর্ণ কাজ। এখানে একটি প্রকল্পের উদাহরণ দেওয়া হলো যা উভয় কাজ একত্রে সম্পন্ন করবে।
প্রকল্পের উদ্দেশ্য
- Text Generation: একটি মডেল তৈরি করা যা কিছু ইনপুট টেক্সট থেকে নতুন টেক্সট তৈরি করবে।
- Sentiment Analysis: ব্যবহারকারীদের দেওয়া টেক্সটের আবেগ (ইতিবাচক, নেতিবাচক, নিরপেক্ষ) বিশ্লেষণ করা।
প্রয়োজনীয় লাইব্রেরি ইনস্টলেশন
প্রথমে প্রয়োজনীয় লাইব্রেরিগুলি ইনস্টল করুন।
pip install pandas numpy transformers torch scikit-learn
ধাপ ১: ডেটা সংগ্রহ এবং প্রক্রিয়াকরণ
১.১. ডেটা সংগ্রহ
আপনার প্রোজেক্টের জন্য উপযুক্ত ডেটা সংগ্রহ করুন। এখানে আমরা IMDb ডেটাসেট ব্যবহার করব, যা সিনেমার রিভিউ সহ ইতিবাচক এবং নেতিবাচক ট্যাগ রয়েছে।
import pandas as pd
# IMDb ডেটাসেট লোড করুন (আপনার কাছে CSV ফাইল থাকলে সেখান থেকে লোড করুন)
data = pd.read_csv('IMDB Dataset.csv') # যেখানে রিভিউ এবং লেবেল রয়েছে
print(data.head())
১.২. ডেটা প্রিপ্রসেসিং
# ডেটার তথ্য পরীক্ষা
print(data.info())
# মিসিং ভ্যালু অপসারণ
data.dropna(inplace=True)
# টার্গেট ভেরিয়েবল 'sentiment' তৈরি করুন
data['sentiment'] = data['sentiment'].map({'positive': 1, 'negative': 0}) # 1: Positive, 0: Negative
ধাপ ২: Text Generation মডেল তৈরি
এখানে আমরা transformers লাইব্রেরি ব্যবহার করে একটি প্রি-ট্রেইনড GPT-2 মডেল ব্যবহার করব।
from transformers import GPT2LMHeadModel, GPT2Tokenizer
# মডেল এবং টোকেনাইজার লোড করুন
tokenizer = GPT2Tokenizer.from_pretrained('gpt2')
model = GPT2LMHeadModel.from_pretrained('gpt2')
# টেক্সট জেনারেট করার ফাংশন
def generate_text(prompt, max_length=50):
inputs = tokenizer.encode(prompt, return_tensors='pt')
outputs = model.generate(inputs, max_length=max_length, num_return_sequences=1)
return tokenizer.decode(outputs[0], skip_special_tokens=True)
# উদাহরণ ইনপুট থেকে টেক্সট তৈরি করুন
prompt = "The movie was"
generated_text = generate_text(prompt)
print("Generated Text:", generated_text)
ধাপ ৩: Sentiment Analysis মডেল তৈরি
এখন আমরা BERT মডেল ব্যবহার করে Sentiment Analysis মডেল তৈরি করব।
from sklearn.model_selection import train_test_split
from transformers import BertTokenizer, BertForSequenceClassification
from transformers import Trainer, TrainingArguments
import torch
# BERT মডেল এবং টোকেনাইজার লোড করুন
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
# ডেটা প্রস্তুতি
X_train, X_test, y_train, y_test = train_test_split(data['review'], data['sentiment'], test_size=0.2, random_state=42)
# টোকেনাইজ করা
train_encodings = tokenizer(list(X_train), truncation=True, padding=True, max_length=128)
test_encodings = tokenizer(list(X_test), truncation=True, padding=True, max_length=128)
# টেন্সর তৈরি
train_dataset = torch.utils.data.Dataset(train_encodings, torch.tensor(y_train.tolist()))
test_dataset = torch.utils.data.Dataset(test_encodings, torch.tensor(y_test.tolist()))
# প্রশিক্ষণ প্যারামিটার সেট করুন
training_args = TrainingArguments(
output_dir='./results', # output directory
num_train_epochs=3, # total number of training epochs
per_device_train_batch_size=16, # batch size per device during training
per_device_eval_batch_size=64, # batch size for evaluation
warmup_steps=500, # number of warmup steps for learning rate scheduler
weight_decay=0.01, # strength of weight decay
logging_dir='./logs', # directory for storing logs
)
# Trainer তৈরি করুন
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=test_dataset
)
# মডেল প্রশিক্ষণ
trainer.train()
ধাপ ৪: Sentiment Analysis এর মাধ্যমে রিভিউ বিশ্লেষণ
# পূর্বাভাস করা
def predict_sentiment(review):
inputs = tokenizer(review, return_tensors='pt', truncation=True, padding=True, max_length=128)
outputs = model(**inputs)
logits = outputs.logits
predicted_class = torch.argmax(logits, dim=-1)
return "Positive" if predicted_class.item() == 1 else "Negative"
# উদাহরণ রিভিউ
sample_review = "I really enjoyed this movie, it was fantastic!"
sentiment = predict_sentiment(sample_review)
print(f"Sentiment: {sentiment}")
উপসংহার
এটি একটি মৌলিক প্রকল্পের কাঠামো যা Text Generation এবং Sentiment Analysis উভয়কেই অন্তর্ভুক্ত করে। আপনি এই কৌশলগুলি ব্যবহার করে আপনার কাজের উপর ভিত্তি করে উন্নত বৈশিষ্ট্য যোগ করতে পারেন, যেমন ডেটা বৃদ্ধি, মডেল টিউনিং এবং আরও।
Read more